﻿#pragma  once
#ifndef WRWORKMODULEACTIVATOR_H
#define WRWORKMODULEACTIVATOR_H

#include "../WRGlobal.h"
#include "../../WRSoft-Utility/Runtime/WRClassActivator.h"
#include <QDomElement>

//工作模块激活器类型标识 {18B943BC-14CA-4C85-928E-3B2BB83B142A}
#define WRWorkModuleActivatorType QUuid(0x18b943bc, 0x14ca, 0x4c85, 0x92, 0x8e, 0x3b, 0x2b, 0xb8, 0x3b, 0x14, 0x2a)

namespace WRTypes
{
    //获取工作模块激活器类型。
    WRSOFT_WORKING_COMMON_API WRType* workModuleActivator(void);
}

//声明工作模块类。
class WRWorkModule;
//声明工作程序类。
class WRWorkDaemon;

//表示工作模块创建器。
class WRSOFT_WORKING_COMMON_CLASS WRWorkModuleActivator : public WRClassActivator
{
private:
    //禁用复制构造函数和赋值操作符。
    Q_DISABLE_COPY(WRWorkModuleActivator)

protected:
    //初始化工作模块创建器。
    inline WRWorkModuleActivator(void)
    {
        //add code here
    }
    //释放当前对象所占用的相关资源。
    ~WRWorkModuleActivator(void)
    {
        //add code here
    }

public:
    //获取当前对象类型。
    WRType* type(void) const;
    //创建工作模块实例。
    virtual WRWorkModule* create(WRWorkDaemon* daemon, const QDomElement& config) = 0;
};

#endif // WRWORKMODULEACTIVATOR_H
